[AWS IoT TwinMaker] ワークスペースを削除しようとすると “Could not assume the role provided, verify permissions” というエラーとなる場合の対処
こんにちは、CX 事業本部 Delivery 部の若槻です。
AWS IoT TwinMaker を利用する際には、すべてのリソースの最上位のコンテナとなる「ワークスペース (Workspace)」をはじめにに作成し、その中にデジタルツインの構築に必要なリソースを作成していくことになります。
今回は、このワークスペースを削除しようとすると `Could not assume the role provided, verify permissions`` というエラーとなる場合の対処方法のご紹介です。
事象
AWS IoT TwinMaker のマネジメントコンソールからワークスペースを削除しようとすると、次のようにエラーが発生して削除に失敗してしまいます。
Unable to delete workspace "< ワークスペース名 >"
Could not assume the role provided, verify permissions
原因
ワークスペースは他の AWS サービスと連携するために実行ロール(Execution Role)を必ず持ちます。
ワークスペース削除時にエラーとなる原因としては、このワークスペース実行ロールが以下のいずれかの場合に Could not assume the role provided, verify permissions
というエラーが発生します。
- 存在していない。
- ワークスペース削除に必要な権限が付与されていない。
今回の場合は、実行ロールの存在を確認してみると削除されてしまっていました。
$ aws iam get-role --role-name CdkSampleStack-WorkspaceExecutionRole1C2472E3-dqgfSRPpaH4x An error occurred (NoSuchEntity) when calling the GetRole operation: The role with name CdkSampleStack-WorkspaceExecutionRole1C2472E3-dqgfSRPpaH4x cannot be found.
対処
次のような IAM ロールを作成します。ここでは CDK を使用していますが、好みの作成方法で構いません。
import { aws_iam, Stack, StackProps } from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class CdkSampleStack extends Stack { constructor(scope: Construct, id: string, props: StackProps) { super(scope, id, props); const WORKSPACE_RESOURCE_BUCKET_NAME = 'cdksamplestack-workspaceresourcebucketeecc84e2-1156w65bird4o'; const WORKSPACE_EXECUTION_ROLE_NAME = 'CdkSampleStack-WorkspaceExecutionRole1C2472E3-dqgfSRPpaH4x'; const WORLSPACE_NAME = "CdkDemoWorkspace" // ワークスペース実行ロール new aws_iam.Role(this, 'WorkspaceExecutionRole', { roleName: WORKSPACE_EXECUTION_ROLE_NAME, assumedBy: new aws_iam.ServicePrincipal('iottwinmaker.amazonaws.com'), inlinePolicies: { readWorkspaceResourceBucket: aws_iam.PolicyDocument.fromJson({ Version: '2012-10-17', Statement: [ // ワークスペース削除時に必要な権限 { Effect: 'Allow', Action: ['s3:DeleteObject'], Resource: [ `arn:aws:s3:::${WORKSPACE_RESOURCE_BUCKET_NAME}/DO_NOT_DELETE_WORKSPACE_${WORLSPACE_NAME}`, ], }, ], }), }, }); } }
- IAM ロール名は、コンソールから確認した実行ロールと同名とします。
- IAM ロールの権限は、同じくコンソールから確認できるリソースバケット内の
DO_NOT_DELETE_WORKSPACE_${WORLSPACE_NAME}
オブジェクトを削除可能な権限を最低でも付与します。 - リソースバケットは実際に存在している必要はありません。
これで、ワークスペースの削除が可能になります。
おわりに
AWS IoT TwinMaker でワークスペースを削除しようとすると `Could not assume the role provided, verify permissions`` というエラーとなる場合の対処についてでした。
私の場合は下記ブログで紹介しているように TwinMaker のリソースを CDK で作成した際に、依存関係の設定忘れなどによって CDK スタック削除時にリソースが中途半端に残ってしまった際によく今回の事象に遭遇します。
同様の事象に遭遇した方の参考になれば幸いです。
以上